package main

import "fmt"

func funA() {
	defer func() { //提前定一个一个defer  用于错误恢复
		err := recover() //recover必须和defer配合使用  在引发panic后  执行
		fmt.Println(err)
		fmt.Println("释放连接资源")
	}()
	fmt.Println("进入程序...")
	funB() //假设这是个连接数据库的代码  可能会报错的
	fmt.Println("...123456...")
}

func funB() {
	panic("连接数据库失败！")
}

func funC() {
	fmt.Println("funC...")
}

func main() {
	funA()
	funC() //funC...  funC照样执行  因为funA中已经做了recover处理  所以程序会继续执行
}
